.\" Macro package for producing books (based on -ms)
.nr PS 12
.nr PZ 12
.\"	RT -  reset everything to normal state
.de RT
.if !\\n(1T .BG
.ce 0
.if !\\n(IK .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
.ul 0
.if \\n(QP \{\
.	ll +\\n(QIu
.	in -\\n(QIu
.	nr QP -1\}
.if \\n(NX<=1 .if \\n(AJ=0 .ll \\n(LLu
.if \\n(IF=0 \{\
.	ps \\n(PS
.	if \\n(VS>=41 .vs \\n(VSu
.	if \\n(VS<=40 .vs \\n(VSp\}
.if \\n(IP .in -\\n(I\\n(IRu
.if \\n(IP=0 .nr I0 \\n(PIu
.if \\n(IP .nr IP -1
.ft 1
.bd 1
.ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
.fi
..
.	\"IZ - initialization
.de IZ
.nr TN 0
.em EM
.if n .ds [. [
.if t .ds [. \s-2\v'-.4m'\f1
.if n .ds .] ]
.if t .ds .] \v'.4m'\s+2\fP
.if n .ds [o ""
.if n .ds [c ""
.if t .ds [o ``
.if t .ds [c ''
.ch FO \\n(YYu
.if \\n(FM=0 .nr FM 1i
.nr YY -\\n(FMu
.nr XX 0 1
.nr IP 0
.nr PI 5n
.nr QI 5n
.nr I0 \\n(PIu
.nr PZ 12
.nr VZ 13.8p
.nr PS \n(PZ
.nr VS \\n(VZu
.if !\\n(PD .if n .nr PD 1v
.if !\\n(PD .if t .nr PD 0.3v
.nr ML 3v
.ps \\n(PS
.if \\n(VS>=41 .vs \\n(VSu
.if \\n(VS<=40 .vs \\n(VSp
.nr IR 0
.nr TB 0
.nr SJ \\n(.j
.nr LL 6i
.ll \\n(LLu
.nr LT \\n(.l
.lt \\n(LTu
.ev 1
.nr FL \\n(LLu*11u/12u
.ll \\n(FLu
.ps 10
.vs 12p
.ev
.if \\*(CH .ds CH "\(hy \\\\n(PN \(hy
.wh 0 NP
.wh -\\n(FMu FO
.ch FO 16i
.wh -\\n(FMu FX
.ch FO -\\n(FMu
.if t .wh -\\n(FMu/2u BT
.if n .wh -\\n(FMu/2u-1v BT
..
.	\"KS keep - for keep release features. As in IFM
.de KS
.nr KN \\n(.u
.if \\n(IK=0 .if \\n(IF=0 .KQ
.nr IK +1
..
.	\"KQ - real keep processor
.de KQ
.br
.nr KI \\n(.i
.ev 2
.br
.in \\n(KIu
.ps \\n(PS
.if \\n(VS>40 .vs \\n(VSu
.if \\n(VS<=39 .vs \\n(VSp
.ll \\n(LLu
.lt \\n(LTu
.if \\n(NX>1 .ll \\n(CWu
.if \\n(NX>1 .lt \\n(CWu
.di KK
.nr TB 0
.nr KV 0
..
.	\"KF - floating keep
.de KF
.nr KN \\n(.u
.if !\\n(IK .FQ
.nr IK +1
..
.	\"FQ real floating keep processor
.de FQ
.nr KI \\n(.i
.ev 2
.br
.in \\n(KIu
.ps \\n(PS
.if \\n(VS>40 .vs \\n(VSu
.if \\n(VS<=39 .vs \\n(VSp
.ll \\n(LLu
.lt \\n(LTu
.if \\n(NX>1 .ll \\n(CWu
.if \\n(NX>1 .lt \\n(CWu
.di KK
.nr TB 1
.nr KV 0
..
.	\"KP - keep full page
.de KP
.nr KV 1
..
.	\"KE release - everything between keep and release is together
.de KE
.if \\n(IK .if !\\n(IK-1 .if \\n(IF=0 .RQ
.if \\n(IK .nr IK -1
..
.	\"RQ real release
.de RQ
.br
.di
.nr NF 0
.if \\n(dn-\\n(.t .nr NF 1
.if \\n(TC .nr NF 1
.if \\n(KV .nr NF 1 \" if KV on full page needed, doesn't fit
.if \\n(NF .if !\\n(TB .sp 11i
.if !\\n(NF .if \\n(TB .nr TB 0
.nf
.rs
.nr TC 5
.in 0
.ls 1
.if \\n(TB=0 .ev
.if \\n(TB=0 .br
.if \\n(TB=0 .ev 2
.if \\n(TB=0 .KK
.ls
.ce 0
.if \\n(TB=0 .rm KK
.if \\n(TB .da KJ
.if \\n(TB \!.KD \\n(dn \\n(KV
.if \\n(TB .KK
.if \\n(TB .di
.nr TC \\n(TB
.if \\n(KN .fi
.in
.ev
..
.de EQ  \"equation, breakout and display
.nr EF \\n(.u
.rm EE
.nr LE 1	\" 1 is center
.ds EL \\$1
.if "\\$1"L" .ds EL \\$2
.if "\\$1"L" .nr LE 0
.if "\\$1"C" .ds EL \\$2
.if "\\$1"I" .nr LE 0
.if "\\$1"I" .ds EE \\h'|10n'
.if "\\$1"I" .if !"\\$3"" .ds EE \\h'\\$3'
.if "\\$1"I" .ds EL \\$2
.if \\n(YE>0 .nf
.di EZ
..
.de EN  \" end of a displayed equation
.br
.di
.rm EZ
.nr ZN \\n(dn
.if \\n(ZN>0 .if \\n(YE=0 .LP
.if \\n(ZN=0 .if !"\\*(EL"" .nr ZN 1
.if "\\n(.z"" .if \\n(ZN>0 .if !\\n(nl=\\n(PE .if t .sp .5
.if "\\n(.z"" .if \\n(ZN>0 .if !\\n(nl=\\n(PE .if n .sp 1
.if !"\\n(.z"" .if \\n(ZN>0 .if !\\n(.d=\\n(PE .if t .sp .5
.if !"\\n(.z"" .if \\n(ZN>0 .if !\\n(.d=\\n(PE .if n .sp 1
'pc
.if \\n(BD>0 .nr LE 0 \" can't mean centering in this case.
.if \\n(MK>0 .if \\n(LE=1 .ds EE \\h'|10n'
.if \\n(MK>0 .nr LE 0 \" don't center if mark/lineup
'lt \\n(.lu
.if \\n(EP=0 .if \\n(ZN>0 .if \\n(LE>0 .tl \(ts\(ts\\*(10\(ts\\*(EL\(ts
.if \\n(EP=0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD=0 .tl \(ts\\*(EE\\*(10\(ts\(ts\\*(EL\(ts
.if \\n(EP=0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD>0 .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
.if \\n(EP=0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD>0 \!\\*(10\\t\\*(EL
.if \\n(EP>0 .if \\n(ZN>0 .if \\n(LE>0 .tl \(ts\\*(EL\(ts\\*(10\(ts\(ts
.if \\n(EP>0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD=0 .tl \(ts\\*(EL\\*(EE\\*(10\(ts\(ts\(ts
.if \\n(EP>0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD>0 .if \\n(BD<\\w\(ts\\*(10\(ts .nr BD \\w\(ts\\*(10\(ts
.if \\n(EP>0 .if \\n(ZN>0 .if \\n(LE=0 .if \\n(BD>0 \!\\h'-\\\\n(.iu'\\*(EL\\h'|0'\\*(10
.\".di EZ \" GCOS patch
.\"\\*(10 \" GCOS patch
.\".br \" GCOS patch
.\".di \" GCOS patch
.\".rm EZ \" GCOS patch
'lt \\n(LLu
'pc %
.if \\n(YE>0 .if \\n(EF>0 .fi
.rm EL 10 11 12 13 14 15 16 17 18 19 20 21 22 23
.rr 10 11 12 13 14 15 16 17 18 19 20 21 22 23
.if \\n(ZN>0 .if t .sp .5
.if \\n(ZN>0 .if n .sp
.if "\\n(.z"" .nr PE \\n(nl
.if !"\\n(.z"" .nr PE \\n(.d
.nr z 72-((\\n(nl-\\n(HM)%72)
.if \\n(nl<\\n(HM .nr z 0
.if \\nz>0 .if \\nz<60 .sp \\nzu  \"force post equation text to whole line
.if \\nz>59 .if \\nz<72 .sp \\nzu-72u   \"move backwards a fraction of a pica
..
.de ME
.nr SJ \\n(.j
.if \\n(LL>0 .nr LT \\n(LL
.nr YE 1
.if \\n(PO=0 .nr PO \\n(.o
.if \\n(mo-0 .ds MO January
.if \\n(mo-1 .ds MO February
.if \\n(mo-2 .ds MO March
.if \\n(mo-3 .ds MO April
.if \\n(mo-4 .ds MO May
.if \\n(mo-5 .ds MO June
.if \\n(mo-6 .ds MO July
.if \\n(mo-7 .ds MO August
.if \\n(mo-8 .ds MO September
.if \\n(mo-9 .ds MO October
.if \\n(mo-10 .ds MO November
.if \\n(mo-11 .ds MO December
.if \\n(dw-0 .ds DW Sunday
.if \\n(dw-1 .ds DW Monday
.if \\n(dw-2 .ds DW Tuesday
.if \\n(dw-3 .ds DW Wednesday
.if \\n(dw-4 .ds DW Thursday
.if \\n(dw-5 .ds DW Friday
.if \\n(dw-6 .ds DW Saturday
.if "\\*(DY"" .ds DY \\*(MO \\n(dy, 19\\n(yr
.if "\\*(CF"" .if n .ds CF "\\*(DY
..
.	\"EM end up macro - process left over keep-release
.de EM
.br
.if \\n(TB=0 .if t .wh -1p CM
.if \\n(TB \&\c
.if \\n(TB 'bp
.if \\n(TB .NP
.if \\n(TB .ch CM 160
..
.	\"NP new page
.de NP
.if \\n(FM+\\n(HM>=\\n(.p .tm Margins bigger than page length.
.if \\n(FM+\\n(HM>=\\n(.p .ab
.if \\n(FM+\\n(HM>=\\n(.p .ex
.nr PX \\n(.s
.nr PF \\n(.f
.nr PV \\n(.v
.if t .CM
.if \\n(HM=0 .nr HM 1i
'sp \\n(HMu/2u
.lt \\n(LTu
.ps \\n(PS
.vs \\n(PS+2
.ft 1
.if \\n(PO>0 .po \\n(POu
.PT
.ps \\n(PX
.vs \\n(PVu
.ft \\n(PF
'sp |\\n(HMu
.nr XX 0 1
.nr YY 0-\\n(FMu
.ch FO 16i
.ch FX 17i
.ch FO \\n(.pu-\\n(FMu
.ch FX \\n(.pu-\\n(FMu
.if \\n(MF .FV
.nr MF 0
.mk
.os
.ev 1
.if \\n(TD=0 .if \\n(TC<5  .XK
.nr TC 0
.ns
.ev
.nr TQ \\n(.i
.nr TK \\n(.u
.if \\n(IT>0 \{\
.	in 0
.	nf
.	TT
.	in \\n(TQu
.	if \\n(TK .fi\
\}
.mk #T
.if t .if \\n(.o+\\n(LL>7.75i .tm Offset (\\n(.o) + line length (\\n(LL) exceeds 7.75 inches, too wide
..
.de XK
.nr TD 1
.nf
.ls 1
.in 0
.rn KJ KL
.KL
.rm KL
.if "\\n(.z"KJ" .di
.nr TB 0
.if "\\n(.z"KJ" .nr TB 1
.br
.in
.ls
.fi
.if (\\n(nl+1v)>(\\n(.p-\\n(FM) .if \\n(NX>1 .RC
.if (\\n(nl+1v)>(\\n(.p-\\n(FM) .if \\n(NX<1 .bp
.nr TD 0
..
.de KD
.nr KM 0
.if "\\n(.z"" .if \\$2>0 .if \\n(nl>\\n(HM .if (\\n(nl+1v)<(\\n(.p-\\n(FM) .di KJ
.if "\\n(.z"" .if \\n(nl>\\n(HM .if \\$2>0 .sp 15i \" full page figure must have new page
.if "\\n(.z"" .if \\n(nl>\\n(HM .if \\$2=0 .if (\\n(nl+1v)>(\\n(.p-\\n(FM) .sp 15i
.if "\\n(.z"KJ" .nr KM 1 \" KM is 1 if in a rediversion of keeps
.if \\n(KM>0 \!.KD \\$1 \\$2
.nr KR \\n(.t
.if \\n(nl<=\\n(HM .nr KR 32767
.if \\n(KM=0 .if \\n(KR<\\$1 .di KJ
.if \\n(KM=0 .if \\n(KR<\\$1 .nr KM 1
.if \\n(KM=0 .if \\$2>0 .if (\\n(nl+1v)>(\\n(.p-\\n(FM) .sp 15i
.rs
.if \\n(KM=0 .if \\$2>0 .sp \\n(.tu-\\$1u
..
.de PT
.lt \\n(LLu
.pc %
.nr PN \\n%
....if \\n%-1 .tl '\\*(LH'\\*(CH'\\*(RH'
.lt \\n(.lu
..
.	\"FO - footer of page
.de FO
.rn FO FZ
.if \\n(K1>0 .tm This memo has a multi-page cover sheet.  You are
.if \\n(K1>0 .tm rebuked in the name of the Committee on Technical Memoranda.
.if \\n(IT>0 .nr T. 1
.if \\n(IT>0 .if \\n(FC=0  .T# 1
.if \\n(IT>0 .br
.nr FC +1
.if \\n(NX<2 .nr WF 0
.nr dn 0
.if \\n(FC<=1 .if \\n(XX .XF
.rn FZ FO
.nr MF 0
.if \\n(dn  .nr MF 1
.if !\\n(WF .nr YY 0-\\n(FMu
.if !\\n(WF .ch FO \\n(YYu
.if !\\n(dn .nr WF 0
.if \\n(FC<=1 .if \\n(XX=0  .if \\n(NX>1 .RC
.nr x 7176u-\\n(.d
.if \nL=1 .if \\n(FC<=1 .if \\n(XX=0  .if \\n(NX<1 'tm Chap=\\na  page=\\n%   short=\\nx    
.if \\n(FC<=1 .if \\n(XX=0  .if \\n(NX<1 'bp
.nr FC -1
.if \\n(ML>0 .ne \\n(MLu
..
.	\"2C - begin double column
.de 2C
.MC \" default MC is double column
..
.de MC \" multiple columns- arg is line length
.nr L1 \\n(LL*7/15
.if \\n(.$>0 .nr L1 \\$1n
.nr GW 0-1
.if \\n(.$>1 .nr GW \\$1n
.nr NQ \\n(LL/\\n(L1
.if \\n(NQ<1 .nr NQ 1
.if \\n(NQ>2 .if (\\n(LL%\\n(L1)=0 .nr NQ -1
.if \\n(1T=0 \{\
.	BG
.	if n .sp 4
.	if t .sp 2\}
.if \\n(NX=0 .nr NX 1
.if !\\n(NX=\\n(NQ \{\
.	RT
.	if \\n(NX>1 .bp
.	mk
.	nr NC 1
.	po \\n(POu\}
.if \\n(NQ>1 .hy 14
.nr NX \\n(NQ
.nr CW \\n(L1
.ll \\n(CWu
.nr FL \\n(CWu*11u/12u
.if \\n(NX>1 .nr GW (\\n(LL-(\\n(NX*\\n(CW))/(\\n(NX-1)
.nr RO \\n(CW+\\n(GW
.ns
..
.de RC
.ie \\n(NC>=\\n(NX .C2
.el .C1
..
.de C1
.rt
.po +\\n(ROu
.nr NC +1
.if \\n(NC>\\n(NX .nr NC 1
.nr XX 0 1
.if \\n(MF .FV
.ch FX \\n(.pu-\\n(FMu
.ev 1
.if \\n(TB .XK
.nr TC 0
.ev
.nr TQ \\n(.i
.if \\n(IT>0 .in 0
.if \\n(IT>0 .TT
.if \\n(IT>0 .in \\n(TQu
.mk #T
.ns
..
.de C2
.po \\n(POu
.nr NC +1
.if \\n(NC>\\n(NX .nr NC 1
'bp
..
.	\"1C - return to single column format
.de 1C
.MC \\n(LLu
.hy 14
..
.	\".de R3
.	\".pl 102
.	\".nr LT \\n(.l
.	\"..
.de BT
.nr PX \\n(.s
.nr PF \\n(.f
.ft 1
.ps \\n(PS
'lt \\n(LTu
.po \\n(POu
.if \\n%>0 .tl '\\*(LF'\\*(CF'\\*(RF'
.ft \\n(PF
.ps \\n(PX
..
.	\"PP - paragraph
.de PP
.RT
.if \\n(1T .sp \\n(PDu
.ti +\\n(PIu
..
.	\"SH - (unnumbered) section heading
.de SH
.ti \\n(.iu
.RT
.if \\n(1T .sp 1
.if !\\n(1T .BG
.RT
.ne 4
.ft 3
..
.	\"NH - numbered heading
.de NH
.RT
.if \\n(1T .sp 1
.if !\\n(1T .BG
.RT
.ne 4
.ft 3
.nr NS \\$1
.if !\\n(.$ .nr NS 1
.if !\\n(NS .nr NS 1
.nr H\\n(NS +1
.if !\\n(NS-4 .nr H5 0
.if !\\n(NS-3 .nr H4 0
.if !\\n(NS-2 .nr H3 0
.if !\\n(NS-1 .nr H2 0
.if !\\$1 .if \\n(.$ .nr H1 1
.ds SN \\n(H1.
.if \\na=0 .ds SN \\*(CN.
.ti \\n(.iu
.if \\n(NS-1 .as SN \\n(H2.
.if \\n(NS-2 .as SN \\n(H3.
.if \\n(NS-3 .as SN \\n(H4.
.if \\n(NS-4 .as SN \\n(H5.
\\*(SN
..
.	\"BG - begin, execute at first PP
.de BG
.br
.ME
.rm ME
.di
.ce 0
.nr KI 0
.hy 14
.nr 1T 1
.S\\n(ST
.rm S0
.rm S1
.rm S2
.rm S3
.rm OD
.rm OK
.rm TX
.rm AX
.rm WT
.rm CS
.rm TM
.rm IM
.rm MF
.rm MR
.rm RP
.rm I1
.rm I2
.rm I3
.rm I4
.rm I5
.rm CB
.rm E1
.rm E2
.de TL
.ft 3
.sp
.if n .ul 100
.ce 100
.ps +2
\\..
.de AU
.ft 2
.if n .ul 0
.ce 100
.sp
.NL
\\..
.de AI
.ft 1
.ce 100
.if n .ul 0
.if n .sp
.if t .sp .5
.NL
\\..
.RA
.rm RA
.rn FJ FS
.rn FK FE
.nf
.ev 1
.ps \\n(PS-2
.vs \\n(.s+2p
.ev
.if \\n(KG=0 .nr FP 0 
.if \\n(GA>1 .if \\n(KG=0 .nr GA 0 \" next UNIX must be flagged.
.nr KG 0 
.if \\n(FP>0 .FS
.if \\n(FP>0 .FG
.if \\n(FP>0 .FE
.br
.if \\n(TV>0 .if n .sp 2
.if \\n(TV>0 .if t .sp 1
.fi
.ll \\n(LLu
..
.de RA \"redefine abstract macros
.de AB
.br
.if !\\n(1T .BG
.ce 1
.sp 1
.if \\n(.$=0 ABSTRACT
.if \\n(.$>0 .if !"\\$1"-" .if !"\\$1"no"  \\$1
.if \\n(.$=0 .sp
.if \\n(.$>0 .if !"\\$1"-" .if !"\\$1"no" .sp
.sp 1
.nr AJ 1
.in +\\n(.lu/12u
.ll -\\n(.lu/12u
.RT
\\..
.de AE
.nr AJ 0
.br
.in 0
.ll \\n(LLu
.if \\n(VS>=41 .vs \\n(VSu
.if \\n(VS<=40 .vs \\n(VSp
\\..
..
.	\"IP - indented paragraph
.de IP
.RT
.if !\\n(IP .nr IP +1
.sp \\n(PDu
.if \\n(.$-1 .nr I\\n(IR \\$2n
.in +\\n(I\\n(IRu
.nr TY \\n(TZ-\\n(.i
.ta \\n(I\\n(IRu \\n(TYuR
.if \\n(.$>0 \{\
.ti -\\n(I\\n(IRu
\&\\$1\t\c\}
..
.	\"LP - left aligned (block) paragraph
.de LP
.ti \\n(.iu
.RT
.if \\n(1T .sp \\n(PDu
..
.de QP
.ti \\n(.iu
.RT
.if \\n(1T .sp \\n(PDu
.ne 1.1
.nr QP 1
.in +\\n(QIu
.ll -\\n(QIu
.ti \\n(.iu
..
.	\"IE - synonym for .LP
.de IE
.LP
..
.	\"LB - label paragraph
.de LB
.in +\\n(I\\n(IRu
.ta \\n(I\\n(IRu
.if \\n(.$ .ti -\\n(I\\n(IRu
.if \\n(.$ \&\\$1\t\c
..
.de XP
.RT
.if !\\n(IP .nr IP +1
.sp \\n(PDu
.ne 3
.if \\n(.$=3 .nr I\\n(IR \\$3n
.if \\n(.$=4 .nr I\\n(IR \\$4n
.nr J\\n(IR \\n(IRu/2u
.if \\n(.$=4 .nr J\\n(IR \\$3n
.in +\\n(I\\n(IRu
.ta \\n(J\\n(IRu \\n(I\\n(IRu
.ti -\\n(I\\n(IRu
\0\\$1\t\\$2\t\c
..
.	\"RS - prepare for double indenting
.de RS
.nr IS \\n(IP
.RT
.nr IP \\n(IS
.if \\n(IP>0 .in +\\n(I\\n(IRu
.nr IR +1
.nr I\\n(IR \\n(PIu
.in +\\n(I\\n(IRu
.nr TY \\n(TZ-\\n(.i
.ta \\n(TYuR
..
.	\"RE - retreat to the left
.de RE
.nr IS \\n(IP
.RT
.nr IP \\n(IS
.if \\n(IR>0 .nr IR -1
.if \\n(IP<=0 .in -\\n(I\\n(IRu
..
.de TC
.nr TZ \\n(.lu
.if \\n(.$ .nr TZ \\$1n
.ta \\n(TZuR
..
.de TD
.LP
.nr TZ 0
..
.	\"CM - cut mark
.de CM
.po 0
.lt 7.6i
.ft 1
.ps 10
.vs 4p
.po
.vs
.lt
.ps
.ft
..
.	\"B - bold font
.de B
.nr PQ \\n(.f
.if t .ft 3
.if "\\$1"" .if n .ul 1000
.if !"\\$1"" .if n .ul 1
.if t .if !"\\$1"" \&\\$1\\f\\n(PQ\\$2
.if n .if \\n(.$=1 \&\\$1
.if n .if \\n(.$>1 \&\\$1\\c
.if n .if \\n(.$>1 \\&\\$2
..
.	\"R - Roman font
.de R
.if n .ul 0
.ft 1
..
.	\"I - italic font
.de I
.nr PQ \\n(.f
.if t .ft 2
.if "\\$1"" .if n .ul 1000
.if !"\\$1"" .if n .ul 1
.if t .if !"\\$1"" \&\\$1\\f\\n(PQ\\$2
.if n .if \\n(.$=1 \&\\$1
.if n .if \\n(.$>1 \&\\$1\\c
.if n .if \\n(.$>1 \\&\\$2
..
.	\"TA - tabs set in ens or chars
.de TA
.ta \\$1n \\$2n \\$3n \\$4n \\$5n \\$6n \\$7n \\$8n \\$9n
..
.	\"SM - make smaller size
.de SM
.if \\n(.$>0 \&\\$3\s-2\\$1\s0\\$2
.if \\n(.$=0 .ps -2
..
.	\"LG - make larger size
.de LG
.ps +2
..
.	\"NL - return to normal size
.de NL
.ps \\n(PS
..
.	\"DA - force date; ND - no date or new date.
.de DA
.if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
.ds CF \\*(DY
..
.de ND
.ME
.rm ME
.ds DY \\$1 \\$2 \\$3 \\$4
.rm CF
..
.de FN
.FS
..
.	\"FS - begin footnote
.de FJ
'ce 0
.di
.ev1
.ll \\n(FLu
.da FF
.br
.if \\n(IF>0 .tm Footnote within footnote-illegal.
.nr IF 1
.if !\\n+(XX-1 .FA
..
.	\"FE - footnote end
.de FK
.br
.in 0
.nr IF 0
.di
.ev
.if !\\n(XX-1 .nr dn +\\n(.v
.nr YY -\\n(dn
.if \\n(NX=0 .nr WF 1
.if \\n(dl>\\n(CW .nr WF 1
.if (\\n(nl+\\n(.v)<=(\\n(.p+\\n(YY) .ch FO \\n(YYu
.if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) .if \\n(nl>(\\n(HM+1.5v) .ch FO \\n(nlu+\\n(.vu
.if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) .if \\n(nl+\\n(FM+1v>\\n(.p .ch FX \\n(.pu-\\n(FMu+2v
.if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) .if \\n(nl<=(\\n(HM+1.5v) .ch FO \\n(HMu+(4u*\\n(.vu)
..
.\"	First page footer.
.de FS
.ev1
.br
.ll \\n(FLu
.da FG
..
.de FE
.br
.di
.nr FP \\n(dn
.if \\n(1T=0 .nr KG 1 \"not in abstract repeat next page.
.if "\\n(.z"OD" .nr KG 0 \" if in OK, don't repeat.
.ev
..
.de FA
.if n __________________________
.if t \l'1i'
.br
..
.de FV
.FS
.nf
.ls 1
.FY
.ls
.fi
.FE
..
.de FX
.if \\n(XX>0 .di FY
.if \\n(XX>0 .ns
..
.de XF
.if \\n(nlu+1v>(\\n(.pu-\\n(FMu) .ch FX \\n(nlu+1.9v
.ev1
.nf
.ls 1
.FF
.rm FF
.nr XX 0 1
.br
.ls
.di
.fi
.ev
..
.de FL
.ev1
.nr FL \\$1n
.ll \\$1
.ev
..
.de UL \" underline argument, don't italicize
.if t \\$1\l'|0\(ul'\\$2
.if n .I \\$1 \\$2
..
.de UX
UNIX
..
.de US
the
.UX
operating system
..
.de QS
.br
.LP
.in +\\n(QIu
.ll -\\n(QIu
..
.de QE
.br
.ll +\\n(QIu
.in -\\n(QIu
.LP
..
.de B1 \" begin boxed stuff
.br
.di BB
.nr BC 0
.if "\\$1"C" .nr BC 1
.nr BE 1
..
.de B2 \" end boxed stuff
.br
.nr BI 1n
.if \\n(.$>0 .nr BI \\$1n
.di
.nr BE 0
.nr BW \\n(dl
.nr BH \\n(dn
.ne \\n(BHu+\\n(.Vu
.nr BQ \\n(.j
.nf
.ti 0
.if \\n(BC>0 .in +(\\n(.lu-\\n(BWu)/2u
.in +\\n(BIu
.BB
.in -\\n(BIu
.nr BW +2*\\n(BI
.sp -1
\l'\\n(BWu\(ul'\L'-\\n(BHu'\l'|0\(ul'\h'|0'\L'\\n(BHu'
.if \\n(BC>0 .in -(\\n(.lu-\\n(BWu)/2u
.if \\n(BQ .fi
.br
..
.de AT
.nf
.sp
.ne 2
Attached:
..
.de CT
.nf
.sp
.ne 2
.ie \\n(.$ Copy to \\$1:
.el Copy to:
..
.de BX
.if t \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
.if n \(br\\kA\|\\$1\|\\kB\(br\v'-1v'\h'|\\nBu'\l'|\\nAu'\v'1v'\l'|\\nAu'
..
.IZ
.rm IZ
.\" ------------------- VARIABLES ------------------------------
.\" \na - Current chapter
.\" \nb - Current section
.\" \nc - Current subsection 
.\" \nd - Set to 0 initially, 1 by PT,  2 by .PB  Used to control running head
.\" \ne - Current equation number
.\" \ng - Used to count items in numbered lists
.\" \nh - Counts number of times CP has been invoked
.\" \nj - Set to 1 iff footer page number needed
.\" \nk - Last figure number used
.\" \nL - 1 if depth printed for each page
.\" \nl - 1 old Agfa length to be used
.\" \np - Numbers end-of-chapter problems
.\" \nq - 1 for double spaced text, smaller vert. margins
.\" \ns - initial page number
.\" \nt - Variable part of spacing inside .BI macro
.\" \nv - Scratch register in lower case roman numerals
.\" \nx - Scratch register
.\" ------------------- GENERAL PARAMETERS ---------------------
.nr BO 43		\" number of lines of text per page
.nr PO 1.3i
.po \n(PO
.if \nq=1 .ls 2		\" -rq1 invokes double spacing
.nr LL 5.67i
.if t \{
.nr PL 29.73c
.nr PI 0.25i\}
.if n \{
.nr LL 80m
.nr PL 11.0i
.nr PI 3m\}
.pl \n(PLu
.nr HM (\n(PLu-(\n(BOu*\n(VSu))/2u
.nr FM \n(PLu-(\n(HMu+((\n(BOu-1u)*\n(VSu)+1u)
.nr xx \n(HMu%\n(VZu
.nr HM \n(HMu-\n(xxu
.nr FM \n(FMu+\n(xxu
.nr t 0 0
.\" ------------------- INITIALIZATION -------------------------
.nr d 0 0
.nr e 0 1
.nr h 0 1
.nr j 1 0
.nr t 0 0
.tr ~
.ds CT "~	\"initially empty
.ND		\"suppress date on bottom of page
.af v i		\"register v is in lower case roman
.ch FO -\n(FMu
.ch BT -\n(FMu+0.5P
.\" ------------------- ALIGN TEXT TO A WHOLE NUMBER OF PICAS ----
.de AL
'nr xx \\n(.du%\\n(VZu
'nr xy \\n(VZu-\\n(xx
'if \\n(xy=\\n(VZu .nr xy 0
'sp \\n(xyu
..
.\" ------------------- DIVISION OF TEXT INTO LOGICAL UNITS ----
.\"	Define chapter number
.de CP
.ds CN \\$1
.ds CX CHAP.
.if '\\$1'A' .ds CX APPENDIX
.if '\\$1'B' .ds CX APPENDIX
.if '\\$1'C' .ds CX APPENDIX
.if '\\$1'D' .ds CX APPENDIX
.if '\\$1'E' .ds CX APPENDIX
.if '\\$1'F' .ds CX APPENDIX
.if '\\$1'A' .nr a 0 0
.if '\\$1'B' .nr a 0 0
.if '\\$1'C' .nr a 0 0
.if '\\$1'D' .nr a 0 0
.if '\\$1'E' .nr a 0 0
.if '\\$1'F' .nr a 0 0
.nr H1 \\$1 0
.nr H2 0 1
.nr a \\$1 0
.nr b 0 1
.nr c 0 1
.nr d 1 1
.nr e 0 1
.nr k 0 1
.nr s \\n%
.if \\nq=1 .PH 6
.ll \\n(LLu
.nr LT \\n(LLu
.lt \\n(LLu
.ll \\n(LLu
.pl \n(PLu
.po \n(POu
.in 0
.nr PS \\n(PZ
.nr VS \\n(VZu
.nr PD 0i
.ds ST
.ds CT \\$2
.if !'\\$3'' .as CT " \\$3
.if \\nh .bp
.rs
.sp 16P
.B
.ps 30
.vs 32
.ce 1
\\$1
.sp 4P
.ps 18
.vs 20
.ce 1
\\$2
.sp 0.25i
.if !'\\$3'' .ce 1
.if !'\\$3'' \\$3
.ps 10
.vs 12
.R
.nr x \\n(.pu/2u
.sp |\\nxu
.nr h +1 1
.tr _\\(ru
.AL
..
.de SP
.sp \\$1	\"used for temporary (page balancing ) fill
..
.de HS
.sp 0.5
..
.\"	Major section (numbered)
.de SE
.nr b +1 1
.nr c 0 1
.ds ST \\$1
.sp 1
.NH 2
\\$1
.sp 1
..
.\"	Subsection (numbered)
.de SS
.nr c +1 1
.NH 3
\\$1
.sp 1
..
.de UU
.SH
\\$1
.sp 1
..
.\"-------------------- PAGE TRANSITION MACROS USED BY -MS ------
.de PH	\"select special running heads
.nr d \\$1
.if \\$1=4 .nr j 1
.ds CT \\$2
..
.de PT
.AL
.pc %
.PN \\n%
'sp |\\n(HMu-0.35i
.ps 10
.\"
.\" nd = 0 means no running head this time, normal next time
.if \\nd=0 \{\
.tl ''''	\" no running head on initial page transition
.nr j 1 0\}
.\"
.\" nd = 1 is normal case: chapter heading even (left) and section odd(right)
.if \\nd=1\{\
.if e .tl '\fB\s+2%\s-2\fR'\\*(CT'\\*(CX~ \\*(CN' \"normal case even page
.if o .if \\nb>0 .tl 'SEC.~ \\*(CN.\\nb'\\*(ST'\fB\s+2%\s-2\fR'
.if o .if \\nb=0 .tl '''\fB\s+2%\s-2\fR'\}
.if o .if \\nb=-999 .tl '\\*(CX~ \\*(CN'\\*(CT'\fB\s+2%\s-2\fR'\}
.\"
.\" nd = 2 is for PROBLEMS; even normal, odd  CHAP. ... PROBLEMS %
.if \\nd=2\{\
.if e .tl '\fB\s+2%\s-2\fR'\\*(CT'\\*(CX~ \\*(CN' \"even page PROBLEMS
.if o .if \\nd=2 .tl '\\*(CX~ \\*(CN'PROBLEMS'\fB\s+2%\s-2\fR' \}
.\"
.\" nd = 3 is for index, problem solutions & other cases with same odd even hd
.if \\nd=3\{\
.if e .tl '\fB\s+2%\s-2\fR'\\*(CT''
.if o .tl ''\\*(CT'\fB\s+2%\s-2\fR'\}
.\"
.\" nd = 4 is like nd = 3, except page numbers are lower case roman
.if \\nd=4\{\
.nr v \\n%
.if e .tl '\fB\s+2\\nv\s-2\fR'\\*(CT''
.if o .tl ''\\*(CT'\fB\s+2\\nv\s-2\fR'\}
.\"
.\" nd = 5 suppresses running heads like nd=0, only it keeps them suppressed
.if \\nd=5 .tl ''''
.\" nd = 6 gives page number in right-hand corner only
.if \\nd=6 .tl '''%'
.if \\nd=0 .nr d 1 0	\" henceforth normal running heads
..
.de BT
.if \\n%=\\ns\{\
.nr x \\n(HMu+(\\n(BO*\\n(VSu)+2P
'sp |\\nxu
.nr v \\n%
.ie \\nd=4 .tl ''\fB\s-1\\nv\s0\fP''
.el .tl ''\fB\s-1\\n%\s0\fP''\}
.nr j 0 0
.if \\nd=0 .nr d 1 0
..
.\"--------------- CHECK FOR INITIAL PAGE NUMBER ---------------
.de PC
.if \n%<\\$1\{
.tm You forgot to set the page number.  Run aborted. Use troff -n
.ex\}
.if \n%>\\$2\{
.tm You forgot to set the page number.  Run aborted. Use troff -n
.ex\}
..
.\"-------------------- LISTS OF THINGS ------------------------
.\"	Start list
.de LI
.nr g 0 1
.in +0.25i
.nr LL -0.25i
.ll -0.25i
.ne 3v
.HS
..
.\"	End list
.de LX
.sp 1
.in -0.25i
.nr LL +0.25i
.ll +0.25i
.LP
..
.\"	List item
.de IT
.HS
.nr g \\ng+1 1
.ie \\ng<10 .IP \0\\ng. 4
.el .IP \\ng. 4
..
.\"Short unnumbered lines
.de UN
.HS
..
.\"-------------------- END OF CHAPTER EXERCISES ---------------
.de PB
.nr d 2 0
.if \\nq=1 .PH 6
.ne 1.5i
.sp 0.5i
.ce 1
.B PROBLEMS
.sp 1
.nr p 0 1
..
.de PR
.ps 11
.vs 13
.nr PS 11
.nr VS 13.01p
.HS
.nr p +1 1
.in \w'00.  'u
.ti -\w'00.  'u
.if \\np>9 \fB\\np.\fR~~\c
.if \\np<10 \fB\0\\np.\fR~~\c
..
.de AA
.sp 3
.if n .nr LL 84m
.nr PS \\n(PZ
.nr VS \\n(VZu
.nr a \\$1 1
.nr b 0 0
.nr p 0 1
.ce 1
.nr x 1
.if '\\$1'A' .nr x 0
.if '\\$1'B' .nr x 0
.if '\\$1'C' .nr x 0
.if \\nq=1 .PH 6
.if \\nx\fBSOLUTIONS TO CHAPTER \\$1 PROBLEMS\fR
.if !\\nx\fBSOLUTIONS TO APPENDIX \\$1 PROBLEMS\fR
.sp 1v
..
.de AN
.HS
.ps \\n(PZ
.vs \\n(VSu
.nr PS \\n(PZ
.nr VS \\n(VZu
.nr p +1 1
.in \w'00.  'u
.ti -\w'00.  'u
.if \\np>9 \fB\\np.\fR~~\c
.if \\np<10 \fB\0\\np.\fR~~\c
..
.\"-------------------- BIBLIOGRAPHY ---------------------------
.de BB
.sp 2
.in 0.25i
..
.de BI
.ps 10
.vs 12
.sp \\ntu
.HS
.if n .HS
.ti -0.30i
.R
..
.\"-------------------- QUOTES ---------------------------------
.ds OQ `\h'-1p'`
.ds CQ '\h'-1p''
.\"-------------------- FIGS.-----------------------------------
.de FC 
'sp 1v
.ps 10
.vs 12
.in +0.5i
.ll -0.5i
.B
.if '\\$1'C' .ce 1
Fig.\|\|\|\\*(CN-\\n+k.~\c
.R
..
.de BF
.KF
'sp 1v
.nr TP \\n(.s
.nr TV \\n(.v
.nr TF \\n(.f
.nr r 0 0
.if \\nq=0 .if  "\\$1"PAGE" .KP
.if \\nq=0 .if  "\\$1"PAGE" .nr r 1 0
.if \\nq=0 .if !"\\$1"PAGE" .sp \\$1
.if \\nq=1 .sp 0.5i
.FC \\$2
..
.de EF
.in -0.5i
.ll +0.5i
.ps \\n(TP
.vs \\n(TV
.ft \\n(TF
'if \\nr==0 'sp 30u
'AL
.KE
..
.de NF
.nr x \\nk+1
.ie !'\\$1'X' Fig.~\\*(CN-\\nx\\$1
.el Figure \\*(CN-\\nx\\$2
..
.de PF
.ie !'\\$1'X' Fig.~\\*(CN-\\nk\\$1
.el Figure \\*(CN-\\nk\\$2
..
.\"-------------------- MULTIPLE BLANK PAGES -------------------
.de MP
.if \\$1 \{\
.KF
.KP
.KE
.MP \\$1-1
.if \\$1<2 .nr k +1 1
\}
..
.\"-------------------- TABLE OF CONTENTS ----------------------
.de XT
.if t .ta 0.4i 0.8i 0.9i \\n(LLuR
.if n .ta 0.3i 1.0i 1.1i 5.0iR
.ps 11
.vs 13
.nr a \\$1 0
.nr b 0 1
.nr c 0 1
.sp 0.40i
.ne 0.3i
.B
\\s18\\$1\\s12	\\$2	\\$3\\fR\\s11
.br
.if !'\\$4''	\\fB\\$4\\fR
.R
.sp 0.5v
..
.de XE
.nr b +1 1
.nr c 0 1
.HS
	\\na.\\nb	\\$1   \\$2
..
.de XS
.nr c +1 1
		\\na.\\nb.\\nc   \\$1   \\$2
..
.\"------------------- INDEX -----------------------------------
.de IL
.nr PS \\n(PZ-2
.nr VS 12.01p
.LP
.nf
.na
.sp 2v
.ne 2
\fB\s+4\\$1\\s0\fR
.sp 1v
..
.\"------------------- NEW .B MACRO ----------------------------
.rm B
.de B
.nr PQ \\n(.f
.ft 3
.if !"\\$1"" \&\\$1\\f\\n(PQ\\$2
..
.\"--------------------- FIXES NEEDED TO -MS -------------------
.\" Remove .if n .ul 1000 from .NH
.\" Remove .if n .ul 1000 from .SH
.\" Fix to allow letters as chapter "numbers"
.\"
.\" Here is the b3mac file
.nr Cs 10
.fp 5 H
.ds fm \(fm
.ds em \(em
.de F
\\fI\\$1\\fR\\$2
..
.de CC
.HS
~~~~~\\s\\n(Cs\\f5\\$1\\fP\\s0
.HS
.LP
..
.de Cx
~~~~~\\s\\n(Cs\\f5\\$1\\fP\\s0\\$2
..
.de Cb
.in +0.25i
\\s\\n(Cs
.HS
\\f5
..
.de Ce
.HS
\\fR
.nr PS \\n(PZ
.nr VS \\n(VZ
.LP
.in -0.25i
..
.de SY
\\$3\s-2\\$1\s+2\\$2
..
.de SM
\\$3\s-1\\$1\s+1\\$2
..
.de FN
\&\\fI\\$1\\fR\\$2
..
.de DI
\&\\fI\\$1\\fR\\$2
..
.de FI
\&\\fI\\$1\\fR\\$2
..
.de LN
.nr x \\$1+\\$2
\\$4line
.L4 \\nx \\$3
..
.de LS
.nr x \\$1+\\$2
.nr y \\$1+\\$3
.nr z \\nx+1
\\$5lines
.L4 \\nx
.ie \\ny=\\nz and
.el to
.L4 \\ny \\$4
..
.ds SQ \(fm\h'-0.05c'\(fm
.de L4
.ie \\$1<10 000\\$1\\$2
.el .ie \\$1<100 00\\$1\\$2
.el .ie \\$1<1000 0\\$1\\$2
.el \\$1\\$2
..
.de KW
\f5\\$1\\$2\fR
..
.ds M0 MINIX
.ds M1 \\s-1MINIX\\s+1
.ds M2 \\s-2MINIX\\s+2
.ds M9 \\s-1MINIX\\s+1
.ds m0 minix
.de MX
\s-2MINIX\s+2\\$1
..
.de Ux
\s-2UNIX\s+2\\$1
..
.tr _\(ru
.de UX
\s-2UNIX\s+2\\$1
..
.ds Mx \\s-1MINIX\\s0
.ds Mp \\s-1MINIX-PC\\s0
.ds Ms \\s-1MINIX-ST\\s0
.de CW
\f5
..
.de Bu
.HS
.IP "\0\(bu" 4
..
.de CD
.ne 2
.if t .ta 0.9i 1.15i 2.75i 3.25i 3.75i
.if n .ta 11m 15m 40m
.nr x 0 0
.nr y 0 0
.nr z 0 0
.if n #\\$1
.if n .br
\\fBCommand:\&	\\$1\\fR
.br
..
.de SX
.if \\nx<=0 \\fBSyntax:\&	\\$1
.if \\nx>0 \&	\\fB\\$1
.nr x 1 1
.br
..
.de FL
.if \\ny<=0 \\fBFlags:\&	\\fB\\$1	\\fR\\$2
.if \\ny>0 \& 	\\fB\\$1	\\fR\\$2
.nr y 1 1
.br
..
.de EX
.br
.nf
.if \\nz<=0 \\fB\&Examples:	\\fR\\$1	\\fR# \\$2
.if \\nz>0 \&	\\fR\\$1	\\fR# \\$2
.nr z 1 1
.br
..
.de EY
.br
.nf
.if \\nz<=0 \\fB\&Example:	\\fR\\$1	\\fR# \\$2
.if \\nz>0 \&	\\fR\\$1	\\fR# \\$2
.nr z 1 1
.br
..
